package clases.academico;

import CapaDatos.DataSource;
import CapaDatos.Sql;
import clases.incio.ButtonEditor;
import clases.incio.ButtonRenderer;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class Medico extends Alumno {

    private String tipoMedico;
    private String descripcionMedico;
    private final DataSource dt;
    private String sql;

    public Medico() {
        dt = new DataSource();
    }

    public String getTipoMedico() {
        return tipoMedico;
    }

    public void setTipoMedico(String tipo) {
        this.tipoMedico = tipo;
    }

    public String getDescripcionMedico() {
        return descripcionMedico;
    }

    public void setDescripcionMedico(String descripcion) {
        this.descripcionMedico = descripcion;
    }

    private int MaxIdMedico() {
        return Sql.getMax("IDMEDICO", "MEDICO", true);
    }
    
    public boolean ExistenciaMedico(String dato, String cedula) {
        sql = "SELECT * FROM MEDICO JOIN ALUMNO "
                + "ON ALUMNO.CEDULARUC=MEDICO.CEDULARUC "
                + "WHERE MEDICO.CEDULARUC='" + cedula + "' "
                + "AND TIPO='" + dato + "' ";
        return Sql.isExiste(sql);
    }

    public boolean guardarMedico() {
        sql = "INSERT INTO MEDICO VALUES('" + this.MaxIdMedico()
                + "','" + this.getCedulaAlumno() + "','" + tipoMedico + "', "
                + "'" + descripcionMedico + "')";
        return Sql.insertar(sql);
    }

    public boolean eliminarMedico() {
        sql = "DELETE FROM MEDICO WHERE CEDULARUC='" + this.getCedulaAlumno() + "'";
        return Sql.eliminar(sql);
    }
    
    public boolean eliminarMedico(String dato, String cedula) {
        if (global.Mensajes.mostrarPregunta("¿Realmente desea eliminar el dato Médico del Alumno?") == true) {
            sql = "DELETE FROM MEDICO WHERE CEDULARUC = '" + cedula + "' AND TIPO='" + dato + "'";
            return Sql.eliminar(sql);
        }
        return false;
    }

    public boolean actualizarMedico() {
        sql = "UPDATE MEDICO SET TIPO='" + this.tipoMedico + "', "
                + "DESCRIPCION='" + this.descripcionMedico + "', "
                + "WHERE CEDULARUC='" + this.getCedulaAlumno() + "'";
        return Sql.actualizar(sql);

    }
    
    public void listarDatoMedico(JComboBox cbo) {
        cbo.removeAllItems();
        cbo.addItem("--Seleccione--");
        sql = "SELECT DISTINCT TIPO FROM MEDICO";

        Sql.getConsulta(sql, dt);
        while (dt.next()) {
            cbo.addItem(dt.getString(1));
        }
        cbo.setSelectedIndex(0);
    }

    public void llenardatosMedico(DefaultTableModel modelo, JTable tabla, String cedula) {
        sql = "SELECT * FROM MEDICO JOIN ALUMNO "
                + "ON ALUMNO.CEDULARUC=MEDICO.CEDULARUC "
                + "WHERE ALUMNO.CEDULARUC='" + cedula + "'";
        // System.out.println(sql);
        Sql.getConsulta(sql, dt);
        String[] fila;

        while (dt.next()) {
            fila = new String[4];
            fila[0] = dt.getString(3);
            fila[1] = dt.getString(4);

            tabla.getColumnModel().getColumn(2).setCellRenderer(new ButtonRenderer());
            tabla.getColumnModel().getColumn(2).setCellEditor(
                    new ButtonEditor(new JCheckBox(), modelo, tabla));

            modelo.addRow(fila);

        }
    }
    
    public String SqlGeneralMedico() {
        sql = "SELECT ALUMNO.CEDULARUC, CONCAT(APELLIDO,' ',NOMBRE) AS ALUMNO, TIPO, DESCRIPCION \n"
                + "FROM MEDICO JOIN ALUMNO ON ALUMNO.CEDULARUC=MEDICO.CEDULARUC \n"
                + "JOIN PERSONA ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC ORDER BY(ALUMNO)";
        return sql;
    }

    public String SqlCedulaMedico(String cedula) {
        sql = "SELECT ALUMNO.CEDULARUC, CONCAT(APELLIDO,' ',NOMBRE) AS ALUMNO, TIPO, DESCRIPCION \n"
                + "FROM MEDICO JOIN ALUMNO ON ALUMNO.CEDULARUC=MEDICO.CEDULARUC \n"
                + "JOIN PERSONA ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC "
                + "WHERE ALUMNO.CEDULARUC LIKE ('" + cedula + "%') ORDER BY(ALUMNO)";
        return sql;
    }

    public String SqlAlumnoMedico(String alumno) {
        sql = "SELECT ALUMNO.CEDULARUC, CONCAT(APELLIDO,' ',NOMBRE) AS ALUMNO, TIPO, DESCRIPCION \n"
                + "FROM MEDICO JOIN ALUMNO ON ALUMNO.CEDULARUC=MEDICO.CEDULARUC \n"
                + "JOIN PERSONA ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC  "
                + "WHERE CONCAT(APELLIDO,' ',NOMBRE) LIKE ('" + alumno + "%') ORDER BY(ALUMNO)";
        return sql;
    }

    public String SqlDatoMedico(String dato) {
        sql = "SELECT ALUMNO.CEDULARUC, CONCAT(APELLIDO,' ',NOMBRE) AS ALUMNO, TIPO, DESCRIPCION \n"
                + "FROM MEDICO JOIN ALUMNO ON ALUMNO.CEDULARUC=MEDICO.CEDULARUC \n"
                + "JOIN PERSONA ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC "
                + "WHERE TIPO = '" + dato + "' ORDER BY(ALUMNO)";
        return sql;
    }

    public void ConsultaMedico(DefaultTableModel modelo, JTable tabla, String sql, JLabel Lpaginatotal, JLabel Lpagina, int pagina) {
        modelo = new DefaultTableModel() {
            @Override
            public boolean isCellEditable(int fila, int columna) {
                return false;
            }
        };
        tabla.setModel(modelo);
        modelo.addColumn("Nº");
        modelo.addColumn("CEDULA");
        modelo.addColumn("ALUMNO");
        modelo.addColumn("DATO MEDICO");
        modelo.addColumn("DESCRIPCION");

        DefaultTableCellRenderer centrar = new DefaultTableCellRenderer();
        centrar.setHorizontalAlignment(SwingConstants.CENTER);
        tabla.getColumnModel().getColumn(0).setCellRenderer(centrar);
        TableColumn columna = new TableColumn();
        columna = tabla.getColumnModel().getColumn(0);
        columna.setPreferredWidth(10);
        columna = tabla.getColumnModel().getColumn(1);
        columna.setPreferredWidth(40);
        columna = tabla.getColumnModel().getColumn(2);
        columna.setPreferredWidth(250);
        columna = tabla.getColumnModel().getColumn(3);
        columna.setPreferredWidth(250);
        columna = tabla.getColumnModel().getColumn(4);
        columna.setPreferredWidth(400);
        sql = objPaginacion.getPaginacion(sql, pagina, 50);
        Sql.getConsulta(sql, dt);
        String[] fila;
        int n = (pagina * 50) - 49;
        while (dt.next()) {
            fila = new String[5];
            fila[0] = Integer.toString(n);
            fila[1] = dt.getString(1);
            fila[2] = dt.getString(2);
            fila[3] = dt.getString(3);
            fila[4] = dt.getString(4);

            modelo.addRow(fila);
            n++;
        }
        objPaginacion.actualPagina(Lpagina);
        objPaginacion.totalPaginas(Lpaginatotal);
        tabla.getSelectionModel().setSelectionInterval(0, 0);
    }


}
